---
title: 'Automatic Instrumentation'
sidebarTitle: 'Native'
icon: 'python'
---

<Info>
  Native Instrumentation is currently the default setting of Odigos **Open-Source** version.

  eBPF-Based Instrumentation is currently not supported for this language.
</Info>

## Supported Versions

Odigos uses the official [opentelemetry-python-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation) OpenTelemetry Auto Instrumentation, thus it supports the same Python versions as this project.

- In the enterprise version, Odigos leverages eBPF to enhance performance in the Python instrumentation process.

- Python runtime versions 3.8 and above are supported.

## Traces

Odigos will automatically instrument your Python services to record and collect spans for distributed tracing, by utilizing the OpenTelemetry Python official auto Instrumentation Libraries.

## Instrumentation Libraries

The following Python modules will be auto instrumented by Odigos:

### Database Clients, ORMs, and Data Access Libraries

- [`aiopg`](https://pypi.org/project/aiopg/) versions `aiopg >= 0.13.0, < 2.0.0`
- [`dbapi`](https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/dbapi/dbapi.html)
- [`mysql`](https://pypi.org/project/mysql-connector-python/) version `mysql-connector-python >= 8.0.0, < 9.0.0`
- [`mysqlclient`](https://pypi.org/project/mysqlclient/) version `mysqlclient < 3.0.0`
- [`psycopg`](https://pypi.org/project/psycopg/) versions `psycopg >= 3.1.0`
- [`psycopg2`](https://pypi.org/project/psycopg2/) versions `psycopg2 >= 2.7.3.1`
- [`pymemcache`](https://pypi.org/project/pymemcache/) versions `pymemcache >= 1.3.5, < 5.0.0`
- [`pymssql`](https://pypi.org/project/pymssql/) versions `pymssql >= 2.1.5, < 3`
- [`pymongo`](https://pypi.org/project/pymongo/) versions `pymongo >= 3.1, < 5.0.0`
- [`pymysql`](https://pypi.org/project/PyMySQL/) versions `pymysql < 2.0.0`
- [`redis`](https://pypi.org/project/redis/) versions `redis >= 2.6`
- [`sqlalchemy`](https://pypi.org/project/SQLAlchemy/)
- [`sqlite3`](https://docs.python.org/3/library/sqlite3.html)
- [`tortoiseorm`](https://pypi.org/project/tortoise-orm/) versions `tortoise-orm >= 0.17.0`, `pydantic >= 1.10.2`
- [`cassandra`](https://pypi.org/project/cassandra-driver/) versions `cassandra-driver >= 3.25.0, < 4.0.0`, `scylla-driver >= 3.25.0, < 4.0.0`
- [`elasticsearch`](https://pypi.org/project/elasticsearch/) versions `elasticsearch >= 6.0.0`
- [`asyncpg`](https://pypi.org/project/asyncpg/) versions `asyncpg >= 0.12.0`

### HTTP Frameworks

- [`asgi`](https://pypi.org/project/asgiref/) versions `asgiref >= 3.0.0, < 4.0.0`
- [`django`](https://pypi.org/project/Django/) versions `django >= 1.10.0`
  <Info>
    Please note that for Django instrumentation to work, you need to set the
    [DJANGO_SETTINGS_MODULE](https://docs.djangoproject.com/en/5.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE) environment variable. Make sure to
    set this in your Kubernetes manifest or Dockerfile to ensure proper configuration.
  </Info>
- [`fastapi`](https://pypi.org/project/fastapi/) versions `fastapi >= 0.58.0, < 0.59.0`, `fastapi-slim >= 0.111.0, < 0.112.0`
- [`flask`](https://pypi.org/project/Flask/) versions `flask >= 1.0.0`
- [`pyramid`](https://pypi.org/project/pyramid/) versions `pyramid >= 1.7.0`
- [`starlette`](https://pypi.org/project/starlette/) versions `starlette >= 0.13.0, < 0.14.0`
- [`falcon`](https://pypi.org/project/falcon/) versions `falcon >= 1.4.1, < 3.1.2`
- [`tornado`](https://pypi.org/project/tornado/) versions `tornado >= 5.1.1`

### HTTP Clients

- [`aiohttp-client`](https://pypi.org/project/aiohttp/) versions `aiohttp >= 3.0.0, < 4.0.0`
- [`httpx`](https://pypi.org/project/httpx/) versions `httpx >= 0.18.0`
- [`requests`](https://pypi.org/project/requests/) versions `requests >= 2.0.0, < 3.0.0`
- [`urllib`](https://docs.python.org/3/library/urllib.html)
- [`urllib3`](https://pypi.org/project/urllib3/) versions `urllib3 >= 1.0.0, < 3.0.0`

### Messaging Systems Clients

- [`aio-pika`](https://pypi.org/project/aio-pika/) versions `aio_pika >= 7.2.0, < 10.0.0`
- [`celery`](https://pypi.org/project/celery/) versions `celery >= 4.0.0, < 6.0.0`
- [`confluent-kafka`](https://pypi.org/project/confluent-kafka/) versions `confluent-kafka >= 1.8.2, <= 2.4.0`
- [`kafka-python`](https://pypi.org/project/kafka-python/) versions `kafka-python >= 2.0.0`
- [`pika`](https://pypi.org/project/pika/) versions `pika >= 0.12.0`
- [`remoulade`](https://pypi.org/project/remoulade/) versions `remoulade >= 0.50.0`

### RPC (Remote Procedure Call)

- [`grpc`](https://pypi.org/project/grpcio/) versions `grpcio >= 1.27.0, < 2.0.0`

### Web Servers

- [`aiohttp-server`](https://pypi.org/project/aiohttp/) versions `aiohttp >= 3.0.0, < 4.0.0`
- [`wsgi`](https://docs.python.org/3/library/wsgiref.html)

### Cloud Services and SDKs

- [`boto`](https://pypi.org/project/boto/) versions `boto >= 2.0.0, < 3.0.0`
- [`boto3sqs`](https://pypi.org/project/boto3/) versions `boto3 >= 1.0.0, < 2.0.0`
- [`botocore`](https://pypi.org/project/botocore/) versions `botocore >= 1.0.0, < 2.0.0`

### Framework and Library Utilities

- [`jinja2`](https://pypi.org/project/Jinja2/) versions `jinja2 >= 2.7, < 4.0`

### Other

- [`asyncio`](https://pypi.org/project/asyncio/)
- [`click`](https://pypi.org/project/click/) versions `click >= 8.1.3, < 9.0.0`

### Gen AI

- [`openai`](https://pypi.org/project/openai/)

### Loggers

Automatic injection of trace context (trace id and span id) into log records for the following loggers:

- [`logging`](https://docs.python.org/3/library/logging.html)
